/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.general.be;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author FreddyHIQ
 */
@Entity
@Table(name = "gen_cargo_empleado")
@NamedQueries({@NamedQuery(name = "CargoEmpleado.findAll", query = "SELECT c FROM CargoEmpleado c"), @NamedQuery(name = "CargoEmpleado.findByFkCarCodigo", query = "SELECT c FROM CargoEmpleado c WHERE c.cargoEmpleadoPK.fkCarCodigo = :fkCarCodigo"), @NamedQuery(name = "CargoEmpleado.findByFkPerCodigoemp", query = "SELECT c FROM CargoEmpleado c WHERE c.cargoEmpleadoPK.fkPerCodigoemp = :fkPerCodigoemp"), @NamedQuery(name = "CargoEmpleado.findByCemFechinicio", query = "SELECT c FROM CargoEmpleado c WHERE c.cemFechinicio = :cemFechinicio")})
public class CargoEmpleado implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected CargoEmpleadoPK cargoEmpleadoPK;
    @Column(name = "cem_fechinicio")
    @Temporal(TemporalType.DATE)
    private Date cemFechinicio;
    @JoinColumn(name = "fk_car_codigo", referencedColumnName = "car_codigo", insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Cargo cargo;
    @JoinColumn(name = "fk_per_codigoemp", referencedColumnName = "fk_per_codigopna", insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Empleado empleado; 

    public CargoEmpleado() {
    }

    public CargoEmpleado(CargoEmpleadoPK cargoEmpleadoPK) {
        this.cargoEmpleadoPK = cargoEmpleadoPK;
    }

    public CargoEmpleado(int fkCarCodigo, long fkPerCodigoemp) {
        this.cargoEmpleadoPK = new CargoEmpleadoPK(fkCarCodigo, fkPerCodigoemp);
    }

    public CargoEmpleadoPK getCargoEmpleadoPK() {
        return cargoEmpleadoPK;
    }

    public void setCargoEmpleadoPK(CargoEmpleadoPK cargoEmpleadoPK) {
        this.cargoEmpleadoPK = cargoEmpleadoPK;
    }

    public Date getCemFechinicio() {
        return cemFechinicio;
    }

    public void setCemFechinicio(Date cemFechinicio) {
        this.cemFechinicio = cemFechinicio;
    }

    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public Empleado getEmpleado() {
        return empleado;
    }

    public void setEmpleado(Empleado empleado) {
        this.empleado = empleado;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cargoEmpleadoPK != null ? cargoEmpleadoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CargoEmpleado)) {
            return false;
        }
        CargoEmpleado other = (CargoEmpleado) object;
        if ((this.cargoEmpleadoPK == null && other.cargoEmpleadoPK != null) || (this.cargoEmpleadoPK != null && !this.cargoEmpleadoPK.equals(other.cargoEmpleadoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.general.be.CargoEmpleado[cargoEmpleadoPK=" + cargoEmpleadoPK + "]";
    }

}
